//封装一个请求工具
//1.创建一个新的axios实例
//2.请求拦截器，如果有token进行携带
//3.响应拦截器 ，1.剥离无效数据，获取有效数据2.处理token失效
//4.导出一个函数，调用当前的axios实例发请求，返回值promise
import { axios } from 'axios'
import { router } from '@/router'
import { store } from '@/store'
//1.创建一个新的axios实例
// 导出基准地址，原因：其他地方不是通过axios发请求的地方用上基准地址
export const baseURL = "http://pcapi-xiaotuxian-front-devtest.itheima.net/"
const instance = axios.create({
        //设置基准路径
        //配置请求得基准URL路径
        baseURL: baseURL,
        //过期时间
        timeout: 5000


    })
    //2.请求拦截器，如果有token进行携带
axios.interceptors.request.use(config => {
        //响应正确
        //拦截业务逻辑
        //进行请求配置修改
        //如果本地有token 就在请求头携带token
        //1.获取用户信息对象
        const { profile } = store.state.user;
        //2.判断是否有token
        if (profile.token) {
            config.headers.Authorization = profile.token
        }
        return config;

    }), err => {
        //响应错误
        return Promise.reject(err)

    }
    //3.响应拦截器 ，1.剥离无效数据，获取有效数据2.处理token失效
    //axios设置响应拦截器
axios.interceptors.response.use(res => res.data, err => {
    //401 状态码，进入该函数
    if (err.response && err.response.status === 401) {
        //1.清除无效的用户信息
        store.commit('user/setUser', {})
            //2.跳转到登陆页
        router.push('/login')
            //3.跳转页面需要传递参数(当前的路由地址)给登陆页面

        // 当前的路由地址
        //组件里面:'/user?a=10' $route.path==='/user' $router.fullPath===/user?a=10'
        //js模块中route.currentRoute.value.fullpath 获取当前的路由地址,currentRoute是ref响应式数据
        //  encodeURLComponent转换url编码，防止解析地址出错。
        const fullpath = encodeURLComponent(route.current)
    }


})